﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using DevExpress.XtraEditors;
using QLT_Public;
using QLT_BLL;

namespace GiaoDien
{
    public partial class frm_Thuoc : DevExpress.XtraEditors.XtraForm
    {
        public frm_Thuoc()
        {
            InitializeComponent();
        }
        //dùng để lấy dữ liệu bên uc_thuôc để dổ dữ liệu vào các texbox bên này
        private int _flag;

        public int Flag
        {
            get { return _flag; }
            set { _flag = value; }
        }
        private int _MaThuoc;

        public int MaThuoc
        {
            get { return _MaThuoc; }
            set { _MaThuoc = value; }
        }
        private string _TenThuoc;

        public string TenThuoc
        {
            get { return _TenThuoc; }
            set { _TenThuoc = value; }
        }
        private string _TenNCC;

        public string TenNCC
        {
            get { return _TenNCC; }
            set { _TenNCC = value; }
        }
        private string _MaLoaiThuoc;

        public string MaLoaiThuoc
        {
            get { return _MaLoaiThuoc; }
            set { _MaLoaiThuoc = value; }
        }
        private int _SoLuongTon;

        public int SoLuongTon
        {
            get { return _SoLuongTon; }
            set { _SoLuongTon = value; }
        }
        private string _DVT;

        public string DVT
        {
            get { return _DVT; }
            set { _DVT = value; }
        }
        private string _XuatXu;

        public string XuatXu
        {
            get { return _XuatXu; }
            set { _XuatXu = value; }
        }
        private string _HanDung;

        public string HanDung
        {
            get { return _HanDung; }
            set { _HanDung = value; }
        }
        private string _TacDung;

        public string TacDung
        {
            get { return _TacDung; }
            set { _TacDung = value; }
        }
        private string _GiaTien;

        public string GiaTien
        {
            get { return _GiaTien; }
            set { _GiaTien = value; }
        }
        public void GetData()
        {
            txtMaThuoc.Text = MaThuoc.ToString();
            txtTenThuoc.Text = TenThuoc;
            txtTenNCC.Text = TenNCC;
            cmbLoaiThuoc.Text = MaLoaiThuoc.ToString();
            txtSoLuongTon.Text = SoLuongTon.ToString();
            cmbDVT.Text = DVT.ToString();
            txtXuatXu.Text = XuatXu;
            dateTimeHanDung.Text = HanDung;
            txtTacDung.Text = TacDung;
            txtGiaTien.Text = GiaTien.ToString();
            // lấy dữ liệu đổ vào combobox mã thuốc
            string sql = "select * from tbl_LoaiThuoc,tbl_Thuoc where tbl_Thuoc.MaLoaiThuoc=tbl_LoaiThuoc.MaLoaiThuoc and MaThuoc='" + txtMaThuoc.Text + "'";
            DataTable dt = new DataTable();
            dt = thuoc_bll.taoBang(sql);
            cobMaLoaiThuoc.DataSource = dt;
            cobMaLoaiThuoc.DisplayMember = "MaLoaiThuoc";
            cmbLoaiThuoc.DataSource = dt;
            cmbLoaiThuoc.DisplayMember = "TenLoaiThuoc";
        }
        //dùng để truyền dữ liệu sang uc_Thuoc,gọi lại hàm load mỗi lần thêm mới,hay sửa
        public delegate void GetInt(int kt);
        public GetInt MyGetData;
        // cho thuộc tính cỏa các textbox ko chỉnh sua dc
        public void EnabledText(Control ctr)
        {
            if (ctr is TextBox || ctr is TextEdit)
            {
                //ctr.Text = string.Empty;
                ctr.Enabled = false;
            }
            foreach (Control i in ctr.Controls)
            {
                EnabledText(i);
            }
        }
        public void EnabledText_True(Control ctr)
        {
            if (ctr is TextBox || ctr is TextEdit)
            {
                //ctr.Text = string.Empty;
                ctr.Enabled = true;
            }
            foreach (Control i in ctr.Controls)
            {
                EnabledText_True(i);
            }
        }
        public void Huy_Text(Control ctr)
        {
            if (ctr is TextBox || ctr is TextEdit)
            {
                ctr.Text = string.Empty;
            }
            foreach (Control i in ctr.Controls)
            {
                Huy_Text(i);
            }
        }
        public void LoadForm()
        {
            if (Flag == 0)
            {
                // khi chọn thêm ở form uc kia thì biết flag dc gán =0 nên nó sẽ thực hiện lệnh này,tưởng tự với khi click xem sauwr xóa.
                this.Text = "Thêm Thuốc";
                bbi_Them.Enabled = false;
                bbi_Sua.Enabled = false;

            }
            if (Flag == 1)
            {//chỉ sửa mới cần đổ dữ liệu vào thui
                this.Text = "Sửa Thuốc";
                bbi_Them.Enabled = false;
                bbi_Sua.Enabled = false;
                GetData();
                errorProvider1.Clear();
            }
            if (Flag == 2)
            {//chỉ sửa mới cần đổ dữ liệu vào thui
               // this.Text = "Sửa Thuốc";
                bbi_Them.Enabled = false;
                bbi_Sua.Enabled = false;
                bbi_Luu.Enabled = false;
                EnabledText(this);
                cmbDVT.Enabled = false;
                cmbLoaiThuoc.Enabled = false;
                dateTimeHanDung.Enabled = false;
                btn_LoaiThuoc.Enabled = false;
                GetData();
                errorProvider1.Clear();
            }

        }
        private void frm_Thuoc_Load(object sender, EventArgs e)
        {
            LoadForm();// hàm này dc gọi đầu tiên khi form dc mở
            cobMaLoaiThuoc.Hide();
            
        }
        NhatKy_Bll nhatKy_bll = new NhatKy_Bll();
        Thuoc_BLL thuoc_bll = new Thuoc_BLL();
        private void bbi_Luu_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            NhatKy_Public nk = new NhatKy_Public();
            Thuoc_Public t = new Thuoc_Public();
            if (Flag == 0)
            {
                try
                {
                    if (txtTenThuoc.Text != "" && txtSoLuongTon.Text != "" && cmbLoaiThuoc.Text != "" && txtGiaTien.Text != "")//kiểm tra nếu nhập ddue thông tin cần thiêt thì mới cho luu
                    {
                        //Them
                        t.TenThuoc = txtTenThuoc.Text;
                        t.TenNCC = txtTenNCC.Text;
                        t.MaLoaiThuoc = int.Parse(cobMaLoaiThuoc.Text);//vì nó là kiểu số,do nó là khóa ngoại nên ko đẻ "0" dc vì ko có khóa nào có mà là 0 cả
                        t.SoLuongTon = int.Parse("0" + txtSoLuongTon.Text);
                        t.DVT = cmbDVT.Text;
                        t.XuatXu = txtXuatXu.Text;
                        t.HanDung = dateTimeHanDung.Text;
                        t.TacDung = txtTacDung.Text;
                        t.GiaTien = float.Parse("0" + txtGiaTien.Text);
                        thuoc_bll.insert_Thuoc(t, t, t, t, t, t, t, t, t);
                        string d = DateTime.Now.ToString();
                        Class_TrungGian tg = new Class_TrungGian();
                        nk.TaiKhoan = tg.TaiKhoan;
                        nk.NgayGio = d;
                        nk.DoiTuong = tg.DoiTuong;
                        nk.HanhDong = "Thêm Mới";
                        nk.MoTa = "Thêm mới thông tin Thuốc: '" + txtTenThuoc.Text + "'";
                        nhatKy_bll.insert_NhatKy(nk, nk, nk, nk, nk);
                        XtraMessageBox.Show("Đã Thêm thuốc", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        cmbDVT.ResetText();
                        cmbLoaiThuoc.ResetText();
                        Huy_Text(this);
                        bbi_Them.Enabled = true;
                        bbi_Sua.Enabled = true;
                        bbi_Luu.Enabled = false;
                        bbi_Huy.Enabled = false;
                    }
                    else
                        XtraMessageBox.Show("Bạn chưa nhập đủ dữ liệu!", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }

                catch (Exception)
                {
                    XtraMessageBox.Show("Thực hiện không thành công!Bạn hãy nhập lại dữ liệu", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }
            if (Flag == 1)
            {
                try
                {
                    if (txtMaThuoc.Text != "" && txtTenThuoc.Text != "" && txtSoLuongTon.Text != "" && cmbLoaiThuoc.Text != "" && txtGiaTien.Text != "")//kiểm tra nếu nhập ddue thông tin cần thiêt thì mới cho luu
                    //Sua
                    {
                        t.MaThuoc = int.Parse(txtMaThuoc.Text);
                        t.TenThuoc = txtTenThuoc.Text;
                        t.TenNCC = txtTenNCC.Text;
                        t.MaLoaiThuoc = int.Parse(cobMaLoaiThuoc.Text);//vì nó là kiểu số,do nó là khóa ngoại nên ko đẻ "0" dc vì ko có khóa nào có mà là 0 cả
                        t.SoLuongTon = int.Parse("0" + txtSoLuongTon.Text);
                        t.DVT = cmbDVT.Text;
                        t.XuatXu = txtXuatXu.Text;
                        t.HanDung = dateTimeHanDung.Text;
                        t.TacDung = txtTacDung.Text;
                        t.GiaTien = float.Parse("0" + txtGiaTien.Text);
                        thuoc_bll.update_Thuoc(t, t, t, t, t, t, t, t, t, t);
                        string d = DateTime.Now.ToString();
                        Class_TrungGian tg = new Class_TrungGian();
                        nk.TaiKhoan = tg.TaiKhoan;
                        nk.NgayGio = d;
                        nk.DoiTuong = tg.DoiTuong;
                        nk.HanhDong = "Sửa";
                        nk.MoTa = "Sửa thông tin Mã Thuốc: '" + txtMaThuoc.Text + "'có tên: '" + txtTenThuoc.Text + "'";
                        nhatKy_bll.insert_NhatKy(nk, nk, nk, nk, nk);
                        XtraMessageBox.Show("Đã Sửa thuốc", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        cmbDVT.ResetText();
                        cmbLoaiThuoc.ResetText();
                        Huy_Text(this);
                        bbi_Them.Enabled = true;
                        bbi_Sua.Enabled = true;
                        bbi_Luu.Enabled = false;
                        bbi_Huy.Enabled = false;
                    }
                    else
                        XtraMessageBox.Show("Bạn chưa nhập đủ thông tin cần thiết!", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
                catch (Exception)
                {
                    XtraMessageBox.Show("Thực hiện không thành công!Bạn hãy nhập lại dữ liệu", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }
            if (Flag == 2)
            {
                try
                {
                    if (txtMaThuoc.Text != "" && txtTenThuoc.Text != "" && txtSoLuongTon.Text != "" && cmbLoaiThuoc.Text != "" && txtGiaTien.Text != "")//kiểm tra nếu nhập ddue thông tin cần thiêt thì mới cho luu
                    {
                        //Sua khi xem
                        t.MaThuoc = int.Parse(txtMaThuoc.Text);
                        t.TenThuoc = txtTenThuoc.Text;
                        t.TenNCC = txtTenNCC.Text;
                        t.MaLoaiThuoc = int.Parse(cobMaLoaiThuoc.Text);//vì nó là kiểu số,do nó là khóa ngoại nên ko đẻ "0" dc vì ko có khóa nào có mà là 0 cả
                        t.SoLuongTon = int.Parse("0" + txtSoLuongTon.Text);
                        t.DVT = cmbDVT.Text;
                        t.XuatXu = txtXuatXu.Text;
                        t.HanDung = dateTimeHanDung.Text;
                        t.TacDung = txtTacDung.Text;
                        t.GiaTien = float.Parse("0" + txtGiaTien.Text);
                        thuoc_bll.update_Thuoc(t, t, t, t, t, t, t, t, t, t);
                        XtraMessageBox.Show("Đã Sửa thuốc", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        cmbDVT.ResetText();
                        cmbLoaiThuoc.ResetText();
                        Huy_Text(this);
                        bbi_Them.Enabled = true;
                        bbi_Sua.Enabled = true;
                        bbi_Luu.Enabled = false;
                        bbi_Huy.Enabled = false;
                    }
                    else
                        XtraMessageBox.Show("Bạn chưa nhập đủ thông tin !", "THông Báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
                catch (Exception)
                {
                    XtraMessageBox.Show("Thực hiện không thành công!Bạn hãy nhập lại dữ liệu", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }

            }
            // truyền tham dữ liệu cho form uc_Thuoc
            MyGetData(1);
        }
 

    
        private void cmbLoaiThuoc_Click(object sender, EventArgs e)
        {
            string sql = "select * from tbl_LoaiThuoc";
            DataTable dt = new DataTable();
            dt = thuoc_bll.taoBang(sql);
            cobMaLoaiThuoc.DataSource = dt;
            cobMaLoaiThuoc.DisplayMember = "MaLoaiThuoc"; 
            cmbLoaiThuoc.DataSource = dt;
            cmbLoaiThuoc.DisplayMember = "TenLoaiThuoc";
        }
        private void bbi_Huy_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            Huy_Text(this);
            bbi_Them.Enabled = true;
            bbi_Sua.Enabled = true;
            bbi_Luu.Enabled = false;
            bbi_Huy.Enabled = false;
            cmbLoaiThuoc.ResetText();
            btn_LoaiThuoc.Enabled = true;
            cmbDVT.ResetText();
            EnabledText_True(this);
            cmbLoaiThuoc.Enabled = true;
            cmbDVT.Enabled = true;
            dateTimeHanDung.Enabled = true;
            Flag = 11;
        }

        private void bbi_Thoat_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            this.Close();
        }

        private void bbi_Them_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            Flag = 0;// trùng với giá trị của nút lưu kia 
            txtMaThuoc.Enabled = false;
            txtMaThuoc.Text = "Mã tự sinh";
            bbi_Luu.Enabled = true;
            bbi_Huy.Enabled = true;
            bbi_Sua.Enabled = false;
            bbi_Them.Enabled = false;
        }

        private void bbi_Sua_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            Flag = 1;
            errorProvider1.Clear();
            txtMaThuoc.Enabled = true;
            bbi_Them.Enabled = false;
            bbi_Sua.Enabled = false;
            bbi_Luu.Enabled = true;
            bbi_Huy.Enabled = true;
        }

        private void txtSoLuongTon_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!Char.IsControl(e.KeyChar) && !Char.IsDigit(e.KeyChar))
                e.Handled = true;
        }

        //private void txtMaThuoc_Leave(object sender, EventArgs e)
        //{
        //    if (txtMaThuoc.Text == "")
        //        txtMaThuoc.Focus();
        //}

        private void txtTenThuoc_Leave(object sender, EventArgs e)
        {
            if (txtTenThuoc.Text == "")
                txtTenThuoc.Focus();
        }

        private void txtTenNCC_Leave(object sender, EventArgs e)
        {
            if (txtTenNCC.Text == "")
                txtTenNCC.Focus();
        }

        private void cmbLoaiThuoc_Leave(object sender, EventArgs e)
        {
            if (cmbLoaiThuoc.Text == "")
                cmbLoaiThuoc.Focus();
        }

        private void txtXuatXu_Leave(object sender, EventArgs e)
        {
            if (txtXuatXu.Text == "")
                txtXuatXu.Focus();
        }

        private void cmbDVT_Leave(object sender, EventArgs e)
        {
            if (cmbDVT.Text == "")
                cmbDVT.Focus();
        }

        private void txtSoLuongTon_Leave(object sender, EventArgs e)
        {
            if (txtSoLuongTon.Text == "")
                txtSoLuongTon.Focus();
        }

        private void txtTacDung_Leave(object sender, EventArgs e)
        {
            if (txtTacDung.Text == "")
                txtTacDung.Focus();
        }

        private void txtGiaTien_Leave(object sender, EventArgs e)
        {
            if (txtGiaTien.Text == "")
                txtGiaTien.Focus();
        }

        private void txtTenThuoc_TextChanged(object sender, EventArgs e)
        {
            string sql = "select * from tbl_Thuoc where TenThuoc like N'"+txtTenThuoc.Text.Trim()+"'";
            DataTable dt = new DataTable();
            dt = thuoc_bll.taoBang(sql);
            if (dt.Rows.Count > 0)
            {
                errorProvider1.SetError(txtTenThuoc, "Tên thuốc đã tồn tại!");
                txtTenThuoc.Focus();
            }
            else
                errorProvider1.Clear();
        }

        private void btn_LoaiThuoc_Click(object sender, EventArgs e)
        {
            frm_Thuoc_LoaiThuoc f = new frm_Thuoc_LoaiThuoc();
            f.MyLoadMaLoai = new frm_Thuoc_LoaiThuoc.GetInt(LoadTenLoaiThuoc);
            f.ShowDialog();
        }
        public void LoadTenLoaiThuoc(int kt)
        {
            cobMaLoaiThuoc.Text = kt.ToString();
        }
        private void cobMaLoaiThuoc_TextChanged(object sender, EventArgs e)
        {
            try
            {
                string sql = "select * from tbl_LoaiThuoc where MaLoaiThuoc='" + cobMaLoaiThuoc.Text + "'";
                DataTable dt = new DataTable();
                dt = thuoc_bll.taoBang(sql);
                cmbLoaiThuoc.DataSource = dt;
                cmbLoaiThuoc.DisplayMember = "TenLoaiThuoc";
            }
            catch (Exception)
            { }
        }

        private void bbi_CapNhatSoLuong_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            frm_CapNhatSoLuongTon f = new frm_CapNhatSoLuongTon();
            f.ShowDialog();
        }

   }
}